import ResourceManageSingleton from "../libs/utils/ResourceManageSingleton";
import SkillPO from "../pojo/po/SkillPO";

/*****************************
 *@file: SkillManageSingle
 *@author: 陈吕唐
 *@desc: 技能管理
 *@date: 2024-03-22	14:37
 *****************************/
export default class SkillManageSingle {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    private static _single: SkillManageSingle = undefined!;
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    /**
     * 技能表配置数据
     */
    private skillPOMap: Map<number, SkillPO> = new Map<number, SkillPO>();
    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/

    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/

    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    public init() {
        this.initPO();
    }

    public getSkillPO(id: number): SkillPO {
        let po = this.skillPOMap.get(id);
        if (!po) {
            console.error(`SkillManageSingle.getSkillPO(${id}) error: skill not found`);
        }
        return po;
    }
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    private initPO() {
        let skill: SkillPO[] = ResourceManageSingleton.singleton.getJson(`Skill`);
        for (let i = 0; i < skill.length; i++) {
            const element = skill[i];
            this.skillPOMap.set(element.id, element);
        }
    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    public static get single(): SkillManageSingle {
        if (!SkillManageSingle._single) {
            SkillManageSingle._single = new SkillManageSingle();
        }
        return SkillManageSingle._single;
    }
}